import service from '../utils/request'

// ==================== 题目相关 API ====================

/**
 * 获取题目列表
 * @param {Object} params 查询参数
 * @param {number} params.page - 页码
 * @param {number} params.size - 每页数量
 * @param {string} params.difficulty - 难度筛选
 * @param {string} params.tag - 标签筛选
 * @param {string} params.keyword - 关键字搜索
 */
export function getProblemList(params) {
  return service.get('/api/problems', { 
    params: params || {}
  })
}

/**
 * 获取题目详情
 * @param {number} problemId 题目ID
 */
export function getProblemDetail(problemId) {
  return service.get(`/api/problems/${problemId}`)
}

/**
 * 获取每日随机题目
 * @param {Object} params 查询参数
 */
export function getDailyRandomProblem(params) {
  return service.get('/api/problems/daily-random', { 
    params: params || {}
  })
}

/**
 * 提交题目答案
 * @param {Object} data 提交数据
 * @param {number} data.problemId - 题目ID
 * @param {string} data.answer - 用户答案
 */
export function submitAnswer(data) {
  return service.post('/api/problems/submit', data)
}

/**
 * 获取用户提交记录
 * @param {number} problemId 题目ID
 */
export function getUserSubmissions(problemId) {
  return service.get(`/api/problems/${problemId}/submissions`)
}

/**
 * 收藏/取消收藏题目
 * @param {number} problemId 题目ID
 */
export function toggleFavorite(problemId) {
  return service.post(`/api/problems/${problemId}/favorite`)
}

/**
 * 获取用户收藏的题目列表
 * @param {Object} params 查询参数
 */
export function getFavoriteProblems(params) {
  return service.get('/api/problems/favorites', { 
    params: params || {}
  })
}

/**
 * 获取题目标签列表
 */
export function getProblemTags() {
  return service.get('/api/problems/tags')
}

/**
 * 获取题目难度选项
 */
export function getDifficultyOptions() {
  return service.get('/api/problems/difficulties')
}

/**
 * 获取课程列表（用于题目编辑时选择所属课程）
 */
export function getCourses() {
  return service.get('/api/problems/courses')
}

/**
 * 获取题目统计信息
 * @param {number} problemId 题目ID
 */
export function getProblemStats(problemId) {
  return service.get(`/api/problems/${problemId}/stats`)
}

/**
 * 获取相似题目推荐
 * @param {number} problemId 题目ID
 */
export function getSimilarProblems(problemId) {
  return service.get(`/api/problems/${problemId}/similar`)
}

/**
 * 获取题目评论
 * @param {number} problemId 题目ID
 * @param {Object} params 查询参数
 */
export function getProblemComments(problemId, params) {
  return service.get(`/api/problems/${problemId}/comments`, { 
    params: params || {}
  })
}

/**
 * 添加题目评论
 * @param {number} problemId 题目ID
 * @param {Object} data 评论数据
 * @param {string} data.content - 评论内容
 */
export function addProblemComment(problemId, data) {
  return service.post(`/api/problems/${problemId}/comments`, data)
}

/**
 * 点赞/取消点赞评论
 * @param {number} commentId 评论ID
 */
export function toggleCommentLike(commentId) {
  return service.post(`/api/comments/${commentId}/like`)
}

/**
 * 获取题目解析
 * @param {number} problemId 题目ID
 */
export function getProblemSolution(problemId) {
  return service.get(`/api/problems/${problemId}/solution`)
}

/**
 * 收藏/取消收藏题目（别名函数，兼容旧代码）
 * @param {number} problemId 题目ID
 */
export function favoriteProblem(problemId) {
  return toggleFavorite(problemId)
}

/**
 * 获取用户学习进度
 */
export function getUserProgress() {
  return service.get('/api/problems/progress')
}
